package com.bt.lms.entity;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 角色信息
 *
 * @author 徐大永
 */
public class Role {

    /**
     * id
     */
    private Long id;

    /**
     * 角色编码
     *
     * @reqRule 必填 文本 UUID
     */
    private String code;

    /**
     * 角色名称
     *
     * @reqRule 必填 文本 5-15
     */
    private String name;

    /**
     * 角色说明
     *
     * @reqRule 非必填 文本 中(255以内)
     */
    private String details;

    /**
     * 创建人
     *
     * @reqRule 必填 文本 小 当前登陆者
     */
    private String builder;

    /**
     * 创建时间
     *
     * @reqRule 必填 日期 格式默认 系统自动获取
     */
    private LocalDateTime buildTime;

    /**
     * 最近变更时间
     *
     * @reqRule 必填 日期 系统自动获取
     */
    private LocalDateTime alterTime;

    /**
     * 状态
     * 1-启用  2-停用
     * @reqRule 必填 单 限选项（启用/停用）
     */
    private Integer status;

    /**
     * 角色的权限
     * 权限：详见网络协议，存储网络协议功能类别
     * @reqRule 非必选 多 限选项 在未关联的所有权限中选择
     */
    private List<Integer> rights;

    /**
     * 设置时间
     *  用户角色关联的瞬间
     */
    private LocalDateTime installRoleTime;

    //-----关系

    /**
     * 角色的用户
     *
     * @reqRule 非必选 多 限选项 在未关联且已启用的所有用户中选择
     */
    private List<User> users;

    public LocalDateTime getInstallRoleTime() {
        return installRoleTime;
    }

    public void setInstallRoleTime(LocalDateTime installRoleTime) {
        this.installRoleTime = installRoleTime;
    }

    public List<Integer> getRights() {
        return rights;
    }

    public void setRights(List<Integer> rights) {
        this.rights = rights;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDetails() {
        return details;
    }

    public void setDetails(String details) {
        this.details = details;
    }

    public String getBuilder() {
        return builder;
    }

    public void setBuilder(String builder) {
        this.builder = builder;
    }

    public LocalDateTime getBuildTime() {
        return buildTime;
    }

    public void setBuildTime(LocalDateTime buildTime) {
        this.buildTime = buildTime;
    }

    public LocalDateTime getAlterTime() {
        return alterTime;
    }

    public void setAlterTime(LocalDateTime alterTime) {
        this.alterTime = alterTime;
    }

    public List<User> getUsers() {
        return users;
    }

    public void setUsers(List<User> users) {
        this.users = users;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }
}
